Ext.ns('Tm.bill');
Tm.bill.BillAddPanel = Ext.extend(Ext.Panel, {
			id : 'billAddPanel',
			frame : true,
		    autoHeight:true,
            autoWidth:true,
			layout : 'fit',
			bill : null,
			initComponent : function() {
				var gridId = Ext.id();
				var compId = 1;
				var bill=this.bill;
				var form = new Tm.common.FormPanel({
							ref : 'form',
							layout : 'table',
							layoutConfig : {
								columns : 3
							},
							defaults : {
								xtype : 'textfield',
								margins : '0 5 0 0'
							},
							items : [{
										plugins : [Ext.ux.FieldLabeler],
										name : 'code',
										fieldLabel : '帐单编号',
										disabled :true

									}, {
										plugins : [Ext.ux.FieldLabeler],
										name : 'taskName',
										fieldLabel : '案件名称',
										disabled :true

									}, {
										plugins : [Ext.ux.FieldLabeler],
										name : 'ownerAccount',
										fieldLabel : '负责律师',
										disabled :true

									}, {
										plugins : [Ext.ux.FieldLabeler],
										name : 'compName',
										fieldLabel : '客户名称',
										disabled :true

									}
			
									
									]
						});
				var sm = new Ext.grid.CheckboxSelectionModel();

				var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
							header : 'id',
							dataIndex : 'id',
							hidden : true
						}, {
							header : 'billId',
							dataIndex : 'billId',
							hidden : true
						}, {
							header : '已付',
							width : 80,
							dataIndex : 'paid',
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : false
							}
						}, {
							header : '应付',
							width : 80,
							dataIndex : 'total',
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}
// , {
// header : '还款期',
// width : 100,
// dataIndex : 'deadline',
// sortable : true,
// editor : {
// xtype : 'textfield',
// allowBlank : true
// }
// }
						, {
							header : '货币',
							width : 100,
							dataIndex : 'currency',
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							header : '描述',
							width : 100,
							dataIndex : 'description',
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}]);
				cm.defaultSortable = true;

				var fields = [{
							name : 'id',
							type : 'int',
							mapping : 'id'
						}, {
							name : 'billId',
							type : 'int',
							mapping : 'id'
						}, {
							name : 'total',
							type : 'int',
							mapping : 'total'
						}, {
							name : 'paid',
							type : 'int',
							mapping : 'paid'
						}, {
							name : 'description',
							type : 'string',
							mapping : 'description'
						}, {
							name : 'status',
							type : 'string',
							mapping : 'status'
						}, {
							name : 'currency',
							type : 'string',
							mapping : 'currency'
						}
// , {
// name : 'deadline',
// type : 'string',
// mapping : 'deadline'
// }
						];
				var ds = new Ext.data.GroupingStore({
							id : 'billAddPanelGridPanelStore',
							proxy : new Ext.data.HttpProxy({
										url : 'bill/queryBillDetail.do'
									}),
							reader : new Ext.data.JsonReader({
										totalProperty : 'totalProperty',
										root : 'root',
										id : 'id',
										fields : fields
									}),
							baseParams : {
								start : 0,
								limit : 20
							},

							sortInfo : {
								field : 'id',
								direction : 'ASC'
							},
							autoLoad : true,
							listeners : {
								beforeload : function() {
									Ext.apply(this.baseParams, {
												billId : bill.id
											});
								}
							}
						}

				);
				var editor = new Ext.ux.grid.RowEditor({
							// clicksToEdit : 2,
							// this changes from the default double-click activation to single click activation
							errorSummary : false,// disables display of validation messages if the row is invalid
							listeners : {

								afteredit : function(roweditor, changes, record, rowIndex) {
									// console.dir(record);
									Ext.Ajax.request({
												url : 'bill/saveOrUpdateBillDetail.do',
												method : 'POST',
												params : Ext.apply(record.data, {
															billId : bill.id,
															taskId:bill.taskId
														}),
												success : function() {
													record.store.load();
												}
											});
								},
								canceledit : function(roweditor, pressed) {
									// console.dir(roweditor);

									if (!roweditor.record.data.id) {
										roweditor.grid.getStore().remove(roweditor.record);
									}

								},

								move : function(p) {
									this.resize();
								},
								hide : function(p) {
									var mainBody = this.grid.getView().mainBody;
									var lastRow = Ext.fly(this.grid.getView().getRow(this.grid.getStore().getCount() - 1));
									mainBody.setHeight(lastRow.getBottom() - mainBody.getTop(), {
												callback : function() {
													mainBody.setHeight('auto');
												}
											});
								},
								afterlayout : function(container, layout) {
									this.resize();
								}
							},
							resize : function() {
								var row = Ext.fly(this.grid.getView().getRow(this.rowIndex)).getBottom();
								var lastRow = Ext.fly(this.grid.getView().getRow(this.grid.getStore().getCount() - 1)).getBottom();
								var mainBody = this.grid.getView().mainBody;
								var h = Ext.max([row + this.btns.getHeight() + 10, lastRow]) - mainBody.getTop();
								mainBody.setHeight(h, true);
							}
						});
				var grid = new Ext.grid.EditorGridPanel({
							id : gridId,
							store : ds,
							sm : sm,
							cm : cm,
							region : 'center',
							border : false,
							stripeRows : true,
							autoHeight : true,
							autoExpandColumn : 'description',
							viewConfig : {
								forceFit : true
							},
							plugins : [editor],
							bbar : new Ext.PagingToolbar({
										plugins : new Ext.ux.ProgressBarPager(),
										pageSize : 20,
										store : ds,
										displayInfo : true,
										emptyMsg : '没有记录'
									})
						});

				var toolBar = new Ext.Toolbar({
							hideBorders : true,
							buttons : [{
										text : '刷新',
										iconCls : 'act_queryIcon',
										handler : function() {
											ds.load();
										}
									}, {
										xtype : 'tbseparator'
									}, {
										text : '新增',
										iconCls : 'act_addIcon',

										handler : function() {
											// access the Record constructor through the grid's store
											var BillDetail = grid.getStore().recordType;
											var billDetail = new BillDetail({
														
													});
											editor.stopEditing();
											grid.getStore().insert(0, billDetail);
											grid.getView().refresh();
											grid.getSelectionModel().selectRow(0);
											editor.startEditing(0);
										}
									}, {
										xtype : 'tbseparator'
									}, {
										text : '删除',
										iconCls : 'act_deleteIcon',

										handler : function() {
											editor.stopEditing();
											console.dir(grid.getSelectionModel());
											var ids = grid.getSelectionModel().selections.keys;
											if (ids.length == 0) {
												return;
											}
											var items = grid.getSelectionModel().selections.items;
											// for(i in items){
											// if(items[i].data.isdefault=='Y'){
											// App.setAlert('notice', '无法删除默认联系人。');
											// return;
											// }
											// }

											Ext.MessageBox.confirm('注意', '您确定要进行该操作？', function(btn) {

														if (btn == 'yes') {

															Ext.Ajax.request({
																		url : 'bill/deleteBillDetails.do',
																		method : 'POST',
																		params : {
																			ids : ids
																		},
																		success : function(action, response) {
																			grid.getStore().load();
																		},
																		failure : function(action, response) {
																			App.setAlert('error', '操作失败');

																		}
																	});
														}

													});

										}
									}, {
										xtype : 'tbseparator'
									}, {
										text : '导出',
										iconCls : 'act_addIcon',

										handler : function() {
											alert('待开发');
										}
									}]
						});
				Ext.apply(this, {
							tbar : toolBar,
							items : [form, grid]
						});
				Tm.bill.BillAddPanel.superclass.initComponent.call(this);
			},
			loadData : function() {
				var bill = this.bill;
				if (bill) {
					var billAddPanel = Ext.getCmp("billAddPanel");
					var form = billAddPanel.form;
					form.getForm().findField("code").setValue(bill.code);
					form.getForm().findField("taskName").setValue(bill.taskName);
					form.getForm().findField("compName").setValue(bill.compName);
					form.getForm().findField("ownerAccount").setValue(bill.ownerAccount);
				}
			},
			listeners : {
				afterrender : function() {
					this.loadData();
				}
			}
		});
